package com.bear.fastrepair.entity

/**
 * 员工信息（新增、修改）
 * @property account String 账号
 * @property avatar String 头像
 * @property password String 密码
 * @property regionCode String 区域编码
 * @property regionText String 去域名
 * @property tel String 电话号码
 * @property userName String 用户名
 * @constructor
 */
data class EmployeeInfo(
    val account: String,
    val avatar: String,
    val password: String,
    val regionCode: String,
    val regionText: String,
    val tel: String,
    val userName: String
)

/**
 * 查询员工信息（分页）
 * @property code Int 返回编码
 * @property data EmployeePage 单页信息
 * @property msg String 返回信息
 * @constructor
 */
data class EmployeePageInfo(
    val code: Int,
    val `data`: EmployeePage,
    val msg: String
)

/**
 * 单页员工信息列表
 * @property pageTotal Int 总页数
 * @property records List<EmployeeInfoAndStatus> 员工信息以及状态
 * @property total Int 记录总数
 * @constructor
 */
data class EmployeePage(
    val pageTotal: Int,
    val records: List<EmployeeInfoAndStatus>,
    val total: Int
)

/**
 * 员工信息以及状态
 * @property account String 账号
 * @property avatar String 头像
 * @property createTime String 创建时间
 * @property id String 员工id
 * @property locationAddress String 地址信息
 * @property locationLatitude Int 纬度
 * @property locationLongitude Int 经度
 * @property regionCode String 区域编码
 * @property regionText String 区域名
 * @property tel String 电话号码
 * @property updateTime String 更新时间
 * @property userName String 用户名
 * @property workStatus Int 工作状态 [0：休息中 1：工作中]
 * @property workStatusText String 字典文案 [0：休息中 1 工作中]
 * @constructor
 */
data class EmployeeInfoAndStatus(
    val account: String,
    val avatar: String,
    val createTime: String,
    val id: String,
    val locationAddress: String,
    val locationLatitude: Int,
    val locationLongitude: Int,
    val regionCode: String,
    val regionText: String,
    val tel: String,
    val updateTime: String,
    val userName: String,
    val workStatus: Int,
    val workStatusText: String
)

/**
 * 查询员工信息响应Bean
 * @property code Int 返回编码
 * @property data EmployeeInfoAndStatus 返回数据
 * @property msg String 返回信息
 * @constructor
 */
data class EmployeeInfoAndStatusResponse(
    val code: Int,
    val `data`: EmployeeInfoAndStatus,
    val msg: String
)

/**
 * 修改员工信息请求体
 * @property account String 账号
 * @property avatar String 头像
 * @property regionCode String 区域编码
 * @property regionText String 区域名
 * @property tel String 电话号码
 * @property userName String 用户名
 * @constructor
 */
data class ModifyEmployee(
    val account: String,
    val avatar: String,
    val regionCode: String,
    val regionText: String,
    val tel: String,
    val userName: String
)

/**
 * 员工个人信息响应体
 * @property code Int
 * @property `data` EmployeePersonalInfo
 * @property msg String
 * @constructor
 */
data class EmployeePersonalInfoResponse(
    val code: Int,
    val `data`: EmployeePersonalInfo,
    val msg: String
)

/**
 * 员工个人信息
 * @property account String
 * @property avatar String
 * @property id String
 * @property locationAddress String
 * @property regionCode String
 * @property regionText String
 * @property tel String
 * @property userName String
 * @property workStatus Int
 * @property workStatusText String
 * @constructor
 */
data class EmployeePersonalInfo(
    val account: String,
    val avatar: String,
    val id: String,
    val locationAddress: String,
    val regionCode: String,
    val regionText: String,
    val tel: String,
    val userName: String,
    val workStatus: Int,
    val workStatusText: String
)

/**
 * 员工登录
 * @property account String
 * @property password String
 * @property verificationCode String
 * @constructor
 */
data class EmployeeLogin(
    val account: String,
    val password: String,
    val verificationCode: String? = null
)

/**
 * 员工重置密码
 * @property id String
 * @property password String
 * @property repeatPassword String
 * @constructor
 */
data class EmployeePasswordReset(
    val id: String? = null,
    val password: String,
    val repeatPassword: String
)

/**
 * 员工位置信息（用于刷新位置信息）
 * @property locationAddress String
 * @property locationLatitude Int
 * @property locationLongitude Int
 * @constructor
 */
data class EmployeeAddressInfo(
    val locationAddress: String?,
    val locationLatitude: String,
    val locationLongitude: String
)

/**
 * 员工工作状态
 * @property workStatus Int
 * @constructor
 */
data class EmployeeWorkStatus(
    val workStatus: Int
)